package org.example.deepseekproject_back.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import org.example.deepseekproject_back.common.BaseResponse;
import org.example.deepseekproject_back.common.ResultUtils;
import org.example.deepseekproject_back.exception.ErrorCode;
import org.example.deepseekproject_back.exception.ThrowUtils;
import org.example.deepseekproject_back.model.user.UserLoginRequest;
import org.example.deepseekproject_back.model.user.UserRegisterRequest;
import org.example.deepseekproject_back.service.UserService;
import org.example.deepseekproject_back.vo.LoginUserVO;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 *  @RestController 表示接口类,返回数据为json格式
 *  @RequestMapping("/") 表示接口路径
 */
@RestController
@RequestMapping("/user")
public class UserController {
    @Resource
    UserService userService;
    /**
     * 用户注册
     * @RequestBody 是一个Spring MVC 注解，它的主要作用是将 HTTP 请求的正文（Body） 绑定到方法的参数上。
     * 将请求体中的内容（如 JSON）自动解析并映射到对应的 Java 对象（如 POJO, Plain Old Java Object）。
     * 简单来说，它告诉 Spring：“请把客户端发来的请求体（通常是 JSON 或 XML 格式的数据），转换并填充到我这个 Java 对象参数里。”
     * // 删除接口：必须拥有管理员角色
     *     @AuthCheck(mustRole = "admin") // 在这里指定需要的角色
     */
    @PostMapping("/register")
   // @AuthCheck(mustRole = UserConstant.ADMIN_ROLE)
    public BaseResponse<Long> userRegister(@RequestBody UserRegisterRequest userRegisterRequest) {

        ThrowUtils.throwIf(userRegisterRequest == null, ErrorCode.PARAMS_ERROR);
        String userAccount = userRegisterRequest.getUserAccount();
        String userPassword = userRegisterRequest.getUserPassword();

        long result = userService.userRegister(userAccount, userPassword);
         return ResultUtils.success(result);
    }
    @PostMapping("/login")
    public BaseResponse<LoginUserVO> userLogin(@RequestBody UserLoginRequest userLoginRequest, HttpServletRequest request) {
        /**
         * 用户登录
         */
        ThrowUtils.throwIf(userLoginRequest == null, ErrorCode.PARAMS_ERROR);
        String userAccount = userLoginRequest.getUserAccount();
        String userPassword = userLoginRequest.getUserPassword();
        LoginUserVO result = userService.userLogin(userAccount, userPassword, request);
        return ResultUtils.success(result);
    }




}